import 'package:dio/dio.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:mtf/app/utils/cache/AppCahche.dart';
//引用转换包
import 'dart:convert' as convert;

import '../app/routes/app_pages.dart';

class DioInterceptors extends Interceptor {
  @override
  void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
    // 头部添加token
    options.headers["token"] = AppCache.getToken();

    // 更多业务需求

    handler.next(options);

    // super.onRequest(options, handler);
  }

  @override
  void onResponse(Response response, ResponseInterceptorHandler handler) async {
    // 请求成功是对数据做基本处理
    if (response.statusCode == 200) {
      var bean=response.data;
      print('dio_interceptors${bean}path${response.requestOptions.path}');
      var code=bean["code"];
      if(code!=200){
        SmartDialog.showToast(bean["msg"]);
        if(bean["data"]==-100){
          AppCache.exitLogin();
          return;
        }
      }
    } else {
      SmartDialog.showToast("请求错误code:${response.statusCode}");
    }
    handler.next(response);
    // 重点

  }

  @override
  void onError(DioError err, ErrorInterceptorHandler handler) {
    if (err.type == DioErrorType.connectionTimeout) {
      // 根据自己的业务需求来设定该如何操作,可以是弹出框提示/或者做一些路由跳转处理
    } else if (err.type == DioErrorType.receiveTimeout) {
      // 根据自己的业务需求来设定该如何操作,可以是弹出框提示/或者做一些路由跳转处理
    } else if (err.type == DioErrorType.sendTimeout) {
// 根据自己的业务需求来设定该如何操作,可以是弹出框提示/或者做一些路由跳转处理
    } else if (err.type == DioErrorType.cancel) {
// 根据自己的业务需求来设定该如何操作,可以是弹出框提示/或者做一些路由跳转处理
    } else if (err.type == DioErrorType.badCertificate) {}
    super.onError(err, handler);
  }
}
